#pragma once

#include <typeinfo>

using namespace std;

class IDependencyBinding
{
public:
	IDependencyBinding(void);
	~IDependencyBinding(void);

	template <class Interface>
	bool IsBind();
	virtual const type_info* GetDependecy();
protected:
	const type_info* interface;
	const type_info* implementation;
};


template <class Interface>
bool IDependencyBinding::IsBind()
{
	const type_info* temp = &typeid(Interface);
	return this->interface == temp;
}


